====== Server-Sicherheit ======

Dieses Kapitel erklärt einige für die Sicherheit des Servers empfehlenswerte Konfigurations-Einstellungen.


===== fail2ban =====

Für den Zugriff auf laufende Interviews wird jedem Interview ein "Token" zugeteilt, eine 12-stellige alphanumerische Zeichenfolge. Wer das Interview-Token kennt, kann das Interview fortführen und ggf. mit dem Zurück-Knopf auch eingegebene Daten einsehen.

Damit man gültige Tokens nicht einfach durch Ausprobieren (brute force) ermitteln kann, sollte der Server IP-Adressen sperren, wenn diese ungültige Tokens verwenden. Dafür speichert SoSci Survey ungültige Eingaben in der Datei ''system/logfiles/token-fail.log''. Auch ungültige Seriennummern und Serienmail-Schlüssel werden in dieser Datei vermerkt.

Auf Linux-Systemen kann man IP-Adressen, die in dieser Liste häufiger auftauchen, mittels [[https://www.fail2ban.org|fail2ban]] vorübergehend sperren. Auf Debian-basierten Systemen kann man fail2ban wie folgt installieren:

    sudo apt-get install fail2ban

Anschließend muss in der Datei ''/etc/fail2ban/jail.local'' noch ein Abschnitt einfügt werden, welcher auf die Logdatei mit den ungültigen Einträgen verweist:

<code>
[serial-fail]
enabled  = true
port     = http,https
filter   = serial-fail
action   = iptables-allports
           mail-whois[name=Serial Fail, dest=info@soscisurvey.de]
logpath  = /var/www/html/sosci/system/logfiles/token-fail.log
maxretry = 10
bantime  = 300
</code>

Dieser Eintrag sperrt eine IP-Adresse für 5 Minuten (`bantime`), wenn von dieser binnen 10 Minuten (Standardeinstellung für `findtime`) 10 fehlerhafte Eingaben (`maxretry`) gemacht wurden.

Der Pfad ''/var/www/html/sosci/'' muss dabei an das Installationsverzeichnis von SoSci Survey angepasst werden. Laden Sie die Konfiguration und überprüfen Sie, ob alles funktioniert:

    sudo fail2ban-client reload
    sudo fail2ban-client status

Die Ausgabe sieht z.B. wie folgt aus:

<code>
Status
|- Number of jail:      3
`- Jail list:   serial-fail, sshd, sshd-ddos
</code>